<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="hIurW" id="hIurW"><span data-lake-id="uaba392dc" id="uaba392dc">典型回答</span></h1>
  <p data-lake-id="ufe5b7949" id="ufe5b7949"><span data-lake-id="ubdfe635b" id="ubdfe635b">我们都知道，在InnoDB存储引擎中，所有的修改操作都必须在事务中进行的，</span></p>
  <p data-lake-id="u823a51bf" id="u823a51bf"><span data-lake-id="u0f6b8e29" id="u0f6b8e29">​</span><br></p>
  <p data-lake-id="uc7140265" id="uc7140265"><span data-lake-id="u18a65c46" id="u18a65c46">那么，而</span><code data-lake-id="u3bac2012" id="u3bac2012"><strong><span data-lake-id="udc11259e" id="udc11259e">SELECT * </span></strong></code><strong><span data-lake-id="ud6d6ccaa" id="ud6d6ccaa">这种普通的读取操作其实也会在事务的上下文中执行</span></strong><span data-lake-id="uacdf1fc3" id="uacdf1fc3">，即使没有明确的开启事务语句，InnoDB存储引擎也会为查询自动开启一个隐式事务。</span></p>
  <p data-lake-id="u50c1e21a" id="u50c1e21a"><span data-lake-id="u22c3a915" id="u22c3a915">​</span><br></p>
  <p data-lake-id="ud74dda1e" id="ud74dda1e"><span data-lake-id="u2694b293" id="u2694b293">因此，InnoDB的所有操作都可以说是在事务的上下文中执行的，包括读取操作和修改操作。</span></p>
  <p data-lake-id="u49fcee95" id="u49fcee95"><span data-lake-id="u698c65a6" id="u698c65a6">​</span><br></p>
  <p data-lake-id="ubc9bc3d0" id="ubc9bc3d0"><span data-lake-id="u2b66bddc" id="u2b66bddc">虽然查询语句也会在事务的上下文中执行，但是由于没有进行任何修改操作，因此事务不会持有任何锁，并且在查询结束后立即提交。这种隐式事务通常被称为自动提交事务（autocommit）。</span></p>
  <p data-lake-id="u6d1053fd" id="u6d1053fd"><span data-lake-id="ua6d4c2d7" id="ua6d4c2d7" class="lake-fontsize-12" style="color: rgb(55, 65, 81); background-color: rgb(247, 247, 248)">​</span><br></p>
  <p data-lake-id="u5f5fc9f5" id="u5f5fc9f5"><br></p>
 </body>
</html>